package com.letu.aopcache.model;

import lombok.Data;

import java.util.Map;

/**
 * 缓存处理的相关 配置
 *
 *
 */
@Data
public class AutoLoadConfig {

    /**
     * 命名空间
     */
    private String namespace;

    /**
     * 是否打印比较耗时的请求
     */
    private boolean printSlowLog = true;

    /**
     * 当请求耗时超过此值时，记录目录（printSlowLog=true 时才有效），单位：毫秒
     */
    private int slowLoadTime = 500;


    /**
     * Processing Map的初始大小
     */
    private int processingMapSize = 1024;


    /**
     * 加载数据之前去缓存服务器中检查，数据是否快过期，如果应用程序部署的服务器数量比较少，设置为false,
     * 如果部署的服务器比较多，可以考虑设置为true
     */
    private boolean checkFromCacheBeforeLoad = false;

    /**
     * 加载数据重试次数，默认值为1：
     */
    private int loadDataTryCnt = 1;


    public String getNamespace() {
        return namespace;
    }

    public void setNamespace(String namespace) {
        this.namespace = namespace;
    }

    public boolean isPrintSlowLog() {
        return printSlowLog;
    }

    public void setPrintSlowLog(boolean printSlowLog) {
        this.printSlowLog = printSlowLog;
    }

    public int getSlowLoadTime() {
        return slowLoadTime;
    }

    public void setSlowLoadTime(int slowLoadTime) {
        if (slowLoadTime < 0) {
            return;
        }
        this.slowLoadTime = slowLoadTime;
    }

    public boolean isCheckFromCacheBeforeLoad() {
        return checkFromCacheBeforeLoad;
    }

    public void setCheckFromCacheBeforeLoad(boolean checkFromCacheBeforeLoad) {
        this.checkFromCacheBeforeLoad = checkFromCacheBeforeLoad;
    }

    public int getLoadDataTryCnt() {
        return loadDataTryCnt;
    }

    public void setLoadDataTryCnt(int loadDataTryCnt) {
        int minCnt = 0;
        int maxCnt = 5;
        if (loadDataTryCnt >= minCnt && loadDataTryCnt < maxCnt) {
            this.loadDataTryCnt = loadDataTryCnt;
        }
    }
}
